// : v.book.read.tip.facade.Facade.java
package v.book.read.tip.facade;

import junit.framework.*;

class A {
    public A(int x) {}
}


class B {
    public B(long x) {}
}


class C {
    public C(double x) {}
}

// 税务顾问是你和税法（tax code）之间的façade，他也是你和税务系统之间的中介者（mediator）。
// Other classes that aren't exposed
// by the facade go here ...
public class Facade extends TestCase {
    
    static A makeA(int x) {
        return new A(x);
    }

    static B makeB(long x) {
        return new B(x);
    }

    static C makeC(double x) {
        return new C(x);
    }

    public void test() {
        // The client programmer gets the objects
        // by calling the static methods:
        A a = Facade.makeA(1);
        B b = Facade.makeB(1);
        C c = Facade.makeC(1.0);
    }

    public static void main(String args[]) {
        junit.textui.TestRunner.run(Facade.class);
    }
    
} // /:~
